﻿

namespace WebViewControl.Contracts
{
    //配置器
    public interface IWebViewEnvironmentProvider
    {
        Task<CoreWebView2Environment> GetEnvironmentAsync();
    }
    //管理器
    public interface IWebViewManager
    {
        event EventHandler<string> WebViewInitialized;
        /// <summary>
        /// 创建一个新的 WebView2 实例（如果 key 已存在，则返回现有实例）
        /// </summary>
        /// <param name="key">实例唯一标识</param>
        /// <param name="userDataFolder">可选：独立用户数据目录</param>
        /// <returns>初始化后的 WebView2 控件</returns>
        Task<WebView2> CreateOrGetAsync(string key, string userDataFolder = null);
         Task  InitializeAsync(string key);
        /// <summary>
        /// 获取已存在的 WebView2 实例（不创建）
        /// </summary>
        /// <param name="key">实例唯一标识</param>
        /// <returns>WebView2 控件或 null</returns>
        WebView2 Get(string key);

        /// <summary>
        /// 异步导航到指定 URL
        /// </summary>
        /// <param name="key">实例唯一标识</param>
        /// <param name="url">目标地址</param>
        Task NavigateAsync(string key, string url);

        /// <summary>
        /// 释放指定 WebView2 实例
        /// </summary>
        /// <param name="key">实例唯一标识</param>
        void Release(string key);

        /// <summary>
        /// 全部释放（用于关闭程序或页面切换时清理）
        /// </summary>
        void ReleaseAll();

        /// <summary>
        /// 设置事件回调（可选，延迟绑定）
        /// </summary>
        void SetEventHandlers(
            string key,
            EventHandler<CoreWebView2NavigationStartingEventArgs> navigationStarting = null,
            EventHandler<CoreWebView2NavigationCompletedEventArgs> navigationCompleted = null
        );
    }


}
